#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Software: PyCharm
# @Version : Python-
# @Author  : Shengji He
# @Email   : hsjbit@163.com
# @File    : LongPressedName.py
# @Time    : 2020/10/21 10:53
# @Description:


class Solution:
    def isLongPressedName(self, name: str, typed: str) -> bool:
        """
        Your friend is typing his name into a keyboard.  Sometimes, when typing a character c, the key might get long
        pressed, and the character will be typed 1 or more times.

        You examine the typed characters of the keyboard.  Return True if it is possible that it was your friends name,
        with some characters (possibly none) being long pressed.
        
        Example 1:
            Input: name = "alex", typed = "aaleex"
            Output: true
            Explanation: 'a' and 'e' in 'alex' were long pressed.
        Example 2:
            Input: name = "saeed", typed = "ssaaedd"
            Output: false
            Explanation: 'e' must have been pressed twice, but it wasn't in the typed output.
        Example 3:
            Input: name = "leelee", typed = "lleeelee"
            Output: true
        Example 4:
            Input: name = "laiden", typed = "laiden"
            Output: true
            Explanation: It's not necessary to long press any character.

        Constraints:
            - 1 <= name.length <= 1000
            - 1 <= typed.length <= 1000
            - The characters of name and typed are lowercase letters.

        :param name: 
        :param typed: 
        :return: 
        """
        i, j = 0, 0
        while j < len(typed):
            if i < len(name) and name[i] == typed[j]:
                i += 1
                j += 1
            elif j > 0 and typed[j] == typed[j - 1]:
                j += 1
            else:
                return False
        return i == len(name)


if __name__ == '__main__':
    S = Solution()
    name = 'alex'
    typed = 'aaleex'
    print(S.isLongPressedName(name, typed))
    print('done')
